use bytes::Bytes;
use h2::{server::SendResponse, RecvStream};

use crate::utils::unique_id::UniqueID;

#[allow(dead_code)]
pub struct H2Stream {
    // 我们会将recv_req的所有权转移给h2 session.
    pub recv_req: Option<http::Request<RecvStream>>,
    // 我们会将send_resp的所有权转移给h2 session.
    pub send_resp: Option<SendResponse<Bytes>>,

    _unique_id: UniqueID,
}

#[allow(dead_code)]
impl H2Stream {
    pub fn new(
        recv_req: http::Request<RecvStream>,
        send_resp: SendResponse<Bytes>,
    ) -> Self {
        H2Stream {
            recv_req: Some(recv_req),
            send_resp: Some(send_resp),
            _unique_id: UniqueID::new(),
        }
    }

    pub fn unique_id(&self) -> UniqueID {
        self._unique_id
    }
}
